load-code/pe

rebuild import table

rule:
  meta:
    name: rebuild import table
    namespace: load-code/pe
    authors:
      - "@Ana06"
    scopes:
      static: function
      dynamic: unsupported  # requires offset features
    mbc:
      - Defense Evasion::Hijack Execution Flow::Import Address Table Hooking [F0015.003]
    references:
      - https://0x00sec.org/t/reflective-dll-injection/3080
      - https://www.ired.team/offensive-security/code-injection-process-injection/reflective-dll-injection
    examples:
      - E4C33AC3638EEF68311F8AC0D72483C7:0x401510
  features:
    - and:
      - os: windows
      - offset: 0x7C = IMAGE_NT_HEADERS.OptionalHeader.DataDirectory.Size
      - offset: 0x78 = IMAGE_NT_HEADERS.OptionalHeader.DataDirectory.VirtualAddress
      - basic block:
        - and:
          - offset: 0xC = IMAGE_IMPORT_DESCRIPTOR.Name
          - api: LoadLibraryA
      - offset: 0x10 = IMAGE_IMPORT_DESCRIPTOR.FirstThunk
      - api: GetProcAddress
      - optional:
        - description: import by ordinal
        - or:
          - and:
            - arch: i386
            - number: 0x80000000 = IMAGE_SNAP_BY_ORDINAL32
          - and:
            - arch: amd64
            - number: 0x8000000000000000 = IMAGE_SNAP_BY_ORDINAL64
          - number: 0xFFFF = IMAGE_ORDINAL
          - number: 0x2 = thunk->u1.AddressOfData

last edited: 2023-11-24 10:34:28